﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using QLDBHYT.DAO;
using QLDBHYT.VO;
using System.Data;
using System.Data.SqlClient;

namespace QLDBHYT.BUS
{

    public class PhieunhapBUS
    {
        private PhieuNhapDAO phieunhapDAO;
        public PhieunhapBUS()
        {
            phieunhapDAO = new PhieuNhapDAO();
        }
        public List<PhieunhapVO> GetListPhieuXuatTH(int thang, int nam, string nhomcp, string condition)
        {
            List<PhieunhapVO> lstPhieuNhap = new List<PhieunhapVO>();
            PhieunhapVO phieunhapVO;
            DataTable dataTable = new DataTable();
            dataTable = phieunhapDAO.SearchPhieuXuatTHByKy(thang, nam, nhomcp, condition);
            foreach (DataRow dr in dataTable.Rows)
            {
                phieunhapVO = new PhieunhapVO();
                phieunhapVO.Dvt = dr["Dvt"].ToString();
                phieunhapVO.Gia = Convert.ToDouble(dr["gia"]);
                phieunhapVO.Gia_bhxh = Convert.ToDouble(dr["gia_bhxh"]);
                phieunhapVO.Mahieu = dr["ma_hieu"].ToString();
                phieunhapVO.Hamluong = Convert.ToString(dr["ham_luong"]);
                phieunhapVO.Nuocsx = dr["nuoc_sx"].ToString();
                phieunhapVO.Slxuat = Convert.ToInt32(dr["Slxuat"]);
                phieunhapVO.Sldauky = Convert.ToInt32(dr["Sldauky"]);
                phieunhapVO.Slnhap = Convert.ToInt32(dr["Slnhap"]);
                phieunhapVO.Tenhieu = dr["Ten_hieu"].ToString();
                phieunhapVO.Ngayxuat = Convert.ToDateTime(dr["ngay_tt"]);
                lstPhieuNhap.Add(phieunhapVO);

            }
            return lstPhieuNhap;
        }
        public List<PhieunhapVO> GetListPhieuXuat(int thang, int nam, string nhomcp, string condition,bool flag)
        {
            List<PhieunhapVO> lstPhieuNhap = new List<PhieunhapVO>();
            PhieunhapVO phieunhapVO;
            DataTable dataTable = new DataTable();
            if (flag)
            {
                dataTable = phieunhapDAO.SearchPhieuXuatByKy(thang, nam, nhomcp, condition);
            }
            else
            {
                dataTable = phieunhapDAO.SearchPhieuXuatSoSachByKy(thang, nam, nhomcp, condition);
            }
            foreach (DataRow dr in dataTable.Rows)
            {
                phieunhapVO = new PhieunhapVO();
                phieunhapVO.Dvt = dr["Dvt"].ToString();
                phieunhapVO.Gia = Convert.ToDouble(dr["gia"]);
                phieunhapVO.Gia_bhxh = Convert.ToDouble(dr["gia_bhxh"]);
                phieunhapVO.Mahieu = dr["ma_hieu"].ToString();
                //phieunhapVO.Nam = Convert.ToInt32(dr["nam"]);
                phieunhapVO.Hamluong = Convert.ToString(dr["ham_luong"]);
                phieunhapVO.Nuocsx = dr["nuoc_sx"].ToString();
                phieunhapVO.Slxuat = Convert.ToInt32(dr["Slxuat"]);
                //phieunhapVO.Sttnh = dr["Stt_nh"].ToString();
                phieunhapVO.Tenhieu = dr["Ten_hieu"].ToString();
                phieunhapVO.Phieuxuat = dr["sophieu"].ToString();
                phieunhapVO.Ngayxuat = Convert.ToDateTime(dr["ngay_tt"]);
                phieunhapVO.Sl = Convert.ToInt32(dr["SL"]);
                if (flag) 
                { 
                    phieunhapVO.Sldauky = Convert.ToInt32(dr["Sldauky"]);
                    phieunhapVO.Slnhap = Convert.ToInt32(dr["Slnhap"]);
                }
                
                lstPhieuNhap.Add(phieunhapVO);

            }
            return lstPhieuNhap;
        }

        public List<PhieunhapVO> GetListPhieuNhap(int thang, int nam, string nhomcp, string tungay, string denngay, string condition)
        {
            List<PhieunhapVO> lstPhieuNhap = new List<PhieunhapVO>();
            PhieunhapVO phieunhapVO;
            DataTable dataTable = new DataTable();
            if (tungay == "" || denngay == "")
            {
                dataTable = phieunhapDAO.SearchByKy(thang, nam, nhomcp, condition);
            }
            else
            {
                dataTable = phieunhapDAO.SearchByNgay(thang, nam, nhomcp,tungay,denngay, condition);
            }
            foreach (DataRow dr in dataTable.Rows)
            {
                phieunhapVO = new PhieunhapVO();
                phieunhapVO.Dvt = dr["Dvt"].ToString();
                phieunhapVO.Gia = Convert.ToDouble(dr["gia"]) ;
                phieunhapVO.Gia_bhxh = Convert.ToDouble(dr["gia_bhxh"]);
                phieunhapVO.Mahieu = dr["ma_hieu"].ToString();
                phieunhapVO.Hamluong = Convert.ToString(dr["ham_luong"]);
                phieunhapVO.Nuocsx = dr["nuoc_sx"].ToString();
                phieunhapVO.Slcuoiky = Convert.ToInt32(dr["Slcuoiky"]);
                phieunhapVO.Sldauky =  Convert.ToInt32(dr["Sldauky"]);
                phieunhapVO.Slnhap = Convert.ToInt32(dr["Slnhap"]);
                phieunhapVO.Slxuat = Convert.ToInt32(dr["Slxuat"]);
                phieunhapVO.Slxuatdc = Convert.ToInt32(dr["Slxuatdc"]);
                phieunhapVO.Sttnh = dr["Stt_nh"].ToString();
                phieunhapVO.Tenhieu = dr["Ten_hieu"].ToString();
                phieunhapVO.Bietduoc = dr["bietduoc"].ToString();
                phieunhapVO.Nhomthuoc = dr["nhomthuoc"].ToString();

                lstPhieuNhap.Add(phieunhapVO);

            }
            return lstPhieuNhap;
        }
        public List<PhieunhapVO> GetListNgayXuat(int thang, int nam, string mahieu)
        {
            List<PhieunhapVO> lstPhieuNhap = new List<PhieunhapVO>();
            PhieunhapVO phieunhapVO;
            DataTable dataTable = new DataTable();
            dataTable = phieunhapDAO.SearchNgayXuat(thang, nam, mahieu);
            foreach (DataRow dr in dataTable.Rows)
            {
                phieunhapVO = new PhieunhapVO();
                phieunhapVO.Slnhap = Convert.ToInt32(dr["slxuat"]);
                phieunhapVO.Ngaynhap = Convert.ToDateTime(dr["ngayxuat"]);
                lstPhieuNhap.Add(phieunhapVO);

            }
            return lstPhieuNhap;
        }
        public List<PhieunhapVO> GetListNgayNhap(int thang, int nam, string mahieu)
        {
            List<PhieunhapVO> lstPhieuNhap = new List<PhieunhapVO>();
            PhieunhapVO phieunhapVO;
            DataTable dataTable = new DataTable();
            dataTable = phieunhapDAO.SearchNgayNhap(thang, nam, mahieu);
            foreach (DataRow dr in dataTable.Rows)
            {
                phieunhapVO = new PhieunhapVO();
                phieunhapVO.Slnhap = Convert.ToInt32(dr["Slnhap"]);
                phieunhapVO.Ngaynhap  = Convert.ToDateTime(dr["ngaynhap"]);
                lstPhieuNhap.Add(phieunhapVO);

            }
            return lstPhieuNhap;
        }
        public List<PhieunhapVO> GetListSLXUAT(int thang, int nam, string mahieu)
        {
            List<PhieunhapVO> lstPhieuNhap = new List<PhieunhapVO>();
            PhieunhapVO phieunhapVO;
            DataTable dataTable = new DataTable();
            dataTable = phieunhapDAO.SearchSLXuat(thang, nam, mahieu);
            foreach (DataRow dr in dataTable.Rows)
            {
                phieunhapVO = new PhieunhapVO();
                phieunhapVO.Slnhap = Convert.ToInt32(dr["Slxuat"]);
                phieunhapVO.Ngaynhap = Convert.ToDateTime(dr["ngay_xuat"]);
                lstPhieuNhap.Add(phieunhapVO);

            }
            return lstPhieuNhap;
        }
        public DataTable GetALL(int thang, int nam)
        {
            return phieunhapDAO.searchAll(thang, nam);
        }
        public PhieunhapVO InsertRecord(PhieunhapVO phieunhapVO)
        {
            return phieunhapDAO.InsertRecord(phieunhapVO);
        }
        public bool UpdateDM(PhieunhapVO phieunhapVO)
        {
            return phieunhapDAO.UpdateDM(phieunhapVO);
        }
        public bool UpdateRecord(PhieunhapVO phieunhapVO)
        {
            return phieunhapDAO.UpdateRecord(phieunhapVO);
        }
        public DataTable CheckPhieuNhap(PhieunhapVO phieunhapVO)
        {
            return phieunhapDAO.CheckPhieuNhap(phieunhapVO);
        }
        public int SlXuat(PhieunhapVO phieunhapVO)
        {
            return Convert.ToInt32(phieunhapDAO.SlXuat(phieunhapVO).Rows[0]["slxuat"]);
        }
        public int CheckPhieuXuat(int thang, int nam)
        {
            return phieunhapDAO.CheckPhieuXuat(thang, nam).Rows.Count;
        }
        public bool ChuyenKy(int thang, int nam,string tungay)
        {
            return phieunhapDAO.Chuyenky(thang, nam, tungay);
        }
        public bool LuiKy(int thang, int nam)
        {
            return phieunhapDAO.Luiky(thang, nam);
        }

       
    }
}
